home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Franz PD / Franz PD Disk #047 (1990)(Amiga User Group Deutschland e.V.)[v Disaster Master 2].zip / Franz PD Disk #047 (1990)(Amiga User Group Deutschland e.V.)[v Disaster Master 2].adf / A68K_Beispiele / GetReal.asm < prev    next >
Assembly Source File  |  1989-07-02  |  2KB  |  90 lines

  1. *
  2. * Opens window , writes text (pointer to in a0, length in d0)
  3. * inputs a real number and converts it to
  4. * floating point format
  5. *
  6. * If d1 = 0 all is well and the number is in d0
  7. * If d1 <> 0 something went wrong
  8. *
  9. * written by E. Lenz
  10. *            Johann-Fichte-Strasse 11
  11. *            8 Munich 40
  12. *            Germany
  13.  
  14.  XDEF GetReal
  15.  XREF RealIn
  16.  
  17. ***** exec ****
  18.  
  19. _AbsExecBase     equ 4
  20. _LVOCloseLibrary equ -$19e
  21. _LVOOpenLibrary  equ -$228
  22.  
  23. **** dos ****
  24.  
  25. _LVOOpen         equ -$1e
  26. _LVOClose        equ -$24
  27. _LVORead         equ -$2a
  28. _LVOWrite        equ -$30
  29.  
  30.  
  31. GetReal      move.l  a6,-(a7)
  32.              movem.l d0/a0,-(a7)
  33.              move.l  _AbsExecBase,a6
  34.              lea     DosName(pc),a1        Open dos.library
  35.              moveq   #0,d0
  36.              jsr     _LVOOpenLibrary(a6)
  37.              move.l  d0,d4
  38.              beq.s   exit
  39.  
  40.              move.l  #cname,d1
  41.              movea.l d4,a6
  42.              move.l  #$3ed,d2      Open for read + write
  43.              jsr     _LVOOpen(a6)
  44.              move.l  d0,a3
  45.              beq.s   exit
  46.  
  47.              move.l  d0,d1
  48.              movem.l (a7)+,d2-d3
  49.              exg     d2,d3
  50.              jsr     _LVOWrite(a6)
  51.  
  52.              move.l  a3,d1
  53.              move.l  #Buffer,d2
  54.              moveq   #60,d3
  55.              jsr     _LVORead(a6)
  56.  
  57.              move.l  a3,d1
  58.              jsr     _LVOClose(a6)
  59.  
  60.              lea     Buffer(pc),a0
  61.              cmpi.b  #$a,(a0)
  62.              bne.s   noReturn
  63.  
  64.              moveq   #1,d1       Return input
  65.              bra.s   exit
  66.  
  67. noReturn     jsr     RealIn
  68.  
  69. exit         movem.l d0-d1,-(a7)
  70.              movea.l _AbsExecBase,a6
  71.              tst.l   d4
  72.              beq.s   NoDos
  73.              movea.l d4,a1        Close dos lib
  74.              jsr     _LVOCloseLibrary(a6)
  75.  
  76. NoDos        movem.l (a7)+,d0-d1
  77.              move.l  (a7)+,a6
  78.              rts
  79.  
  80. Buffer       ds.b 80
  81.  
  82. cname        dc.b 'CON:100/100/200/100/Real input',0
  83.              even
  84.  
  85. DosName      dc.b 'dos.library',0
  86.              even
  87.  
  88.              end
  89.  
  90.